package cn.iocoder.yudao.module.scrm.annotations;

import cn.iocoder.yudao.module.scrm.enums.common.CrmBizTypeEnum;
import cn.iocoder.yudao.module.scrm.enums.util.FieldNameType;
import cn.iocoder.yudao.module.scrm.exception.FieldRepeatValidatorHandler;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解类处理器复合注解
 * 比较a表中x字段值是否大于b表中y字段值
 *
 * @Author LiZhiMin
 * @Date 2024/8/31 17:34
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldCompareValidators {

    /**
     * 要查询的主表的类型 {@link CrmBizTypeEnum#getType()}
     */
    CrmBizTypeEnum foreignKeyType() default CrmBizTypeEnum.CRM_RECEIVABLE;

    /**
     * 要查询的主表的字段名字
     */
    FieldNameType foreignKeyFieldName() default FieldNameType.SCRM_PRICE;


    //要校验的注解多个
    FieldCompareValidator[] fieldCompareValidator();

    String message() default "";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
